/******************************************************************************* * Copyright (c) 2010 Fraunhofer IWU and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Fraunhofer IWU - initial API and implementation *******************************************************************************/ package net.enilink.composition.test; import org.junit.Before; import net.enilink.composition.ClassResolver; import net.enilink.composition.CompositionModule; import net.enilink.composition.DefaultObjectFactory; import net.enilink.composition.ObjectFactory; import net.enilink.composition.mappers.RoleMapper; import net.enilink.composition.mappers.TypeFactory; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.Module; import com.google.inject.Provides; import com.google.inject.Singleton; import com.google.inject.TypeLiteral; public abstract class CompositionTestCase { ObjectFactory<String> objectFactory; ClassResolver<String> classResolver; private RoleMapper<String> roleMapper; @Before public void setUp() throws Exception { Injector injector = Guice.createInjector(createModule()); objectFactory = injector.getInstance(new Key<ObjectFactory<String>>() { }); classResolver = injector.getInstance(new Key<ClassResolver<String>>() { }); } protected Module createModule() { return new CompositionModule<String>() { @Override protected void configure() { super.configure(); bind(new Key<ObjectFactory<String>>() { }).to(new TypeLiteral<DefaultObjectFactory<String>>() { }); bind(new TypeLiteral<ClassResolver<String>>() { }); } @Override protected void initRoleMapper(RoleMapper<String> roleMapper, TypeFactory<String> typeFactory) { CompositionTestCase.this.roleMapper = roleMapper; super.initRoleMapper(roleMapper, typeFactory); CompositionTestCase.this.initRoleMapper(roleMapper); } @Provides @Singleton protected TypeFactory<String> provideTypeFactory() { return new TypeFactory<String>() { @Override public String createType(String type) { return type; } @Override public String toString(String type) { return type; } }; } }; } protected void initRoleMapper(RoleMapper<String> roleMapper) { } protected RoleMapper<String> getRoleMapper() { return roleMapper; } }